home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / dvitovdu32 / src / pascal / vt640vdu.p < prev   
Text File  |  1991-11-10  |  4KB  |  150 lines

  1. (* VDU routines for a VT640 terminal. *)
  2.  
  3. #include 'globals.h';
  4. #include 'screenio.h';
  5. #include 'vdu.h';
  6. #include 'tek4010vdu.h';
  7.  
  8. (******************************************************************************)
  9.  
  10. PROCEDURE StartText;
  11.  
  12. (* We are about to draw text in dialogue region. *)
  13.  
  14. BEGIN
  15. TEK4010StartText;
  16. END; (* StartText *)
  17.  
  18. (******************************************************************************)
  19.  
  20. PROCEDURE MoveAbs (row, col : INTEGER);
  21.  
  22. (* Move cursor to given screen position. *)
  23.  
  24. BEGIN
  25. WriteChar(ESC); WriteChar('[');
  26. WriteInt(row);
  27. WriteChar(';');
  28. WriteInt(col);
  29. WriteChar('H');
  30. END; (* MoveAbs *)
  31.  
  32. (******************************************************************************)
  33.  
  34. PROCEDURE MoveToTextLine (line : INTEGER);
  35.  
  36. (* Move current position to start of given line. *)
  37.  
  38. BEGIN
  39. WriteChar(GS);    (* cannot send CAN if VT640 is already in VT100 mode *)
  40. WriteChar(CAN);   (* switch to VT100 mode *)
  41. MoveAbs(line,1);
  42. END; (* MoveToTextLine *)
  43.  
  44. (******************************************************************************)
  45.  
  46. PROCEDURE ClearTextLine (line : INTEGER);
  47.  
  48. (* Erase given line; note that DVItoVDU does not assume anything about the
  49.    current position at the end of this routine.
  50. *)
  51.  
  52. BEGIN
  53. WriteChar(GS);
  54. WriteChar(CAN);
  55. MoveAbs(line,1);
  56. WriteChar(ESC);
  57. WriteString('[K');   (* erase to end of line *)
  58. END; (* ClearTextLine *)
  59.  
  60. (******************************************************************************)
  61.  
  62. PROCEDURE ClearScreen;
  63.  
  64. BEGIN
  65. WriteChar(GS);
  66. WriteChar(CAN);
  67. WriteChar(ESC);
  68. WriteString('[2J');   (* erase all alphanumerics *)
  69. TEK4010ClearScreen;
  70. END; (* ClearScreen *)
  71.  
  72. (******************************************************************************)
  73.  
  74. PROCEDURE StartGraphics;
  75.  
  76. (* We are about to draw in window region. *)
  77.  
  78. BEGIN
  79. TEK4010StartGraphics;
  80. END; (* StartGraphics *)
  81.  
  82. (******************************************************************************)
  83.  
  84. PROCEDURE LoadFont (fontname : string;
  85.                     fontsize : INTEGER;
  86.                     mag, hscale, vscale : REAL);
  87.  
  88. BEGIN
  89. TEK4010LoadFont(fontname,fontsize,mag,hscale,vscale);
  90. END; (* LoadFont *)
  91.  
  92. (******************************************************************************)
  93.  
  94. PROCEDURE ShowChar (screenh, screenv : INTEGER;
  95.                     ch : CHAR);
  96.  
  97. BEGIN
  98. TEK4010ShowChar(screenh, screenv, ch);
  99. END; (* ShowChar *)
  100.  
  101. (******************************************************************************)
  102.  
  103. PROCEDURE ShowRectangle (screenh, screenv,          (* top left pixel *)
  104.                          width, height : INTEGER;   (* size of rectangle *)
  105.                          ch : CHAR);                (* black pixel *)
  106.  
  107. BEGIN
  108. TEK4010ShowRectangle(screenh, screenv, width, height, ch);
  109. END; (* ShowRectangle *)
  110.  
  111. (******************************************************************************)
  112.  
  113. PROCEDURE ResetVDU;
  114.  
  115. BEGIN
  116. WriteChar(GS);    (* cannot send CAN if VT640 is already in VT100 mode *)
  117. WriteChar(CAN);   (* switch to VT100 mode *)
  118. END; (* ResetVDU *)
  119.  
  120. (******************************************************************************)
  121.  
  122. PROCEDURE InitVDU;
  123.  
  124. (* The dialog region will be the top 4 text lines in VT100 mode:
  125.       Line 1 = DVI status line,
  126.       Line 2 = window status line,
  127.       Line 3 = message line,
  128.       Line 4 = command line.
  129.    The window region will be text lines 5 to 24 in VT100 mode.
  130. *)
  131.  
  132. BEGIN
  133. InitTEK4010VDU;
  134. DVIstatusl    := 1;      (* DVItoVDU assumes top text line = 1 *)
  135. windowstatusl := 2;
  136. messagel      := 3;
  137. commandl      := 4;
  138. bottoml       := 24;     (* also number of text lines on screen *)
  139. (* The above values assume the VT640 is in VT100 mode;
  140.    the following values assume it is emulating a Tektronix 4010.
  141.    Note that windowv must be given a value using DVItoVDU's coordinate scheme
  142.    where top left pixel is (0,0).
  143. *)
  144. windowv  := 130;         (* approx. height in TEK4010 pixels of 4 text lines
  145.                             i.e. 4 * 780/24 *)
  146. windowh  := 0;
  147. windowht := 780 - windowv;
  148. windowwd := 1024;
  149. END; (* InitVDU *)
  150.